package challenge.计挑赛._2022区域赛;

import java.util.Scanner;

/**
 * @author 挚爱之夕
 * @version 1.0
 * @implSpec
 * 某药店为了回馈顾客，拿出7个品牌的口罩做特价限购活动：A品牌是3个装2元，B品牌是3个装3元，C品
 * 牌是4个装2元，D品牌是5个装3元，E品牌是4个装5元，F品牌是1个装2元，G品牌是2个装2元，每个品牌
 * 只能买一包。小涵拿N元钱去药店买特价口罩，小涵最多能买多少个口罩?
 * 注意：通过手算直接输出结果视作无效作答。
 * 输入说明：钱数N元（0<=N<=100）。
 * 输出说明：能买到的口罩最大数量。
 * 输入样例1：10
 * 输入样例2：25
 * 输出样例1：15
 * 输出样例2：22
 * @since 2022 - 12 - 29 - 15:06
 */
public class A_买口罩 {
}
//想到的是二进制枚举
class A_1 {
    static int n;
    static int[] cnt;
    static int[] price;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        cnt = new int[]{3, 3, 4, 5, 4, 1, 2};
        price = new int[]{2, 3, 2, 3, 5, 2, 2};
        //0000000 - 1111111
        //ABCDEFG
        /*
         A 3个 2元
         B 3 3
         C 4 2
         D 5 3
         E 4 5
         F 1 2
         G 2 2
         */
        int res = 0;
        for(int i = 0; i < (1 << 7); i++) {
            if(check(i)) {
                res = Math.max(res, get(i));
            }
        }
        System.out.println(res);
    }
    public static boolean check(int i) {
        int sum = 0;
        for(int j = 0; j < 7; j++) {
            if(((i >> j) & 1) == 1) {
                sum += price[j];
            }
        }
        return sum <= n;
    }
    static int get(int i) {
        int sum = 0;
        for(int j = 0; j < 7; j++) {
            if(((i >> j) & 1) == 1) {
                sum += cnt[j];
            }
        }
//    	System.out.println(Integer.toBinaryString(i) + " " + sum);
        return sum;
    }
}

//01-背包
class A_2{
    static int[][] nums = {
            {3, 2}, {3, 3}, {4, 2}, {5, 3}, {4, 5}, {1, 2}, {2, 2}
    };
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] dp = new int[n + 1];
        for(int i = 0; i < 7; i++){ //枚举物品
            for(int j = n; j >= nums[i][1]; j--){ //枚举背包体积
                dp[j] = Math.max(dp[j], dp[j - nums[i][1]] + nums[i][0]);
            }
        }
        System.out.println(dp[n]);
    }
}
